package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.enums.TipoPessoa;
import br.com.foxinline.modelo.Pessoa;
import br.com.foxinline.modelo.Protocolo;
import br.com.foxinline.modelo.ProtocoloItem;
import br.com.foxinline.servico.PessoaServico;
import br.com.foxinline.servico.ProtocoloServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarProtocolo implements Serializable {

    @EJB
    ProtocoloServico protocoloServico;
    @EJB
    PessoaServico pessoaServico;
    
    private Protocolo protocoloPesquisar;
    private Protocolo protocoloVisualizar;
    private Protocolo protocoloDeletar;
    
    private List<ProtocoloItem> protocoloItens;
    
    private List<Protocolo> protocolos;
    
    private Pessoa pessoaPesquisar;
    private Pessoa pessoaSelecionada;
    private List<Pessoa> pessoas;

    private String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();        
        delegar();
    }    
    
    private void instanciar() {
        this.protocoloPesquisar = new Protocolo();
        this.protocoloPesquisar.setDataCadastro(null);
        this.protocoloPesquisar.setCliente(new Pessoa());
        
        this.protocolos = new ArrayList<Protocolo>();

        initPessoas();
    }
    
    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("protocoloId");
        
        if (this.visualizarId != null) {
            this.protocoloVisualizar = protocoloServico.pesquisar(Long.parseLong(this.visualizarId));
            
            this.protocoloItens = protocoloServico.obterItens(this.protocoloVisualizar);
        }
    }
    
    public void initPessoas() {
        this.pessoaPesquisar = new Pessoa();
        this.pessoaPesquisar.setTipoPessoa(TipoPessoa.FISICA);
        this.pessoas = new ArrayList<Pessoa>();        
    }    

    public void pesquisarPessoas() {
        this.pessoas = pessoaServico.pesquisarCliente(this.pessoaPesquisar);
    }    
    
    public void pesquisar() {
        this.protocolos = protocoloServico.pesquisar(this.protocoloPesquisar);
    }

    public void deletar() {
        protocoloServico.deletar(this.protocoloDeletar);
        pesquisar();

        Mensagem.messagemInfo("Protocolo excluído com sucesso!");
    }    
    
    public void limpar() {
        instanciar();
    }

    public void limparPessoas() {
        this.pessoaPesquisar.setNome(null);
        this.pessoaPesquisar.setCpf(null);
        this.pessoaPesquisar.setCnpj(null);
        this.pessoas = new ArrayList<Pessoa>();
    }

    public Protocolo getProtocoloPesquisar() {
        return protocoloPesquisar;
    }

    public void setProtocoloPesquisar(Protocolo protocoloPesquisar) {
        this.protocoloPesquisar = protocoloPesquisar;
    }

    public List<Protocolo> getProtocolos() {
        return protocolos;
    }

    public void setProtocolos(List<Protocolo> protocolos) {
        this.protocolos = protocolos;
    }

    public Pessoa getPessoaPesquisar() {
        return pessoaPesquisar;
    }

    public void setPessoaPesquisar(Pessoa pessoaPesquisar) {
        this.pessoaPesquisar = pessoaPesquisar;
    }

    public Pessoa getPessoaSelecionada() {
        return pessoaSelecionada;
    }

    public void setPessoaSelecionada(Pessoa pessoaSelecionada) {
        this.pessoaSelecionada = pessoaSelecionada;
    }

    public List<Pessoa> getPessoas() {
        return pessoas;
    }

    public void setPessoas(List<Pessoa> pessoas) {
        this.pessoas = pessoas;
    }

        public Protocolo getProtocoloVisualizar() {
        return protocoloVisualizar;
    }

    public void setProtocoloVisualizar(Protocolo protocoloVisualizar) {
        this.protocoloVisualizar = protocoloVisualizar;
    }

    public Protocolo getProtocoloDeletar() {
        return protocoloDeletar;
    }

    public void setProtocoloDeletar(Protocolo protocoloDeletar) {
        this.protocoloDeletar = protocoloDeletar;
    }

    public List<ProtocoloItem> getProtocoloItens() {
        return protocoloItens;
    }

    public void setProtocoloItens(List<ProtocoloItem> protocoloItens) {
        this.protocoloItens = protocoloItens;
    }

}
